package com.chj.chuji.tijie08;

//https://www.cnblogs.com/57xmz/p/13292348.html
public class Household01 {

	public static void main(String[] args) {
		int N = 100005;

		int[] s = new int[N];
		int[] a = new int[N];
		int n = 5;

		int res = 0;
		int[] srd = new int[] { 1, 2, 3, 4, 5 };
		for (int i = 0; i < n; i++) {
			s[i] = srd[i];
		}

		int[] ard = new int[] { 1, 2, 3, 4, 5 };
		for (int i = 0; i < n; i++) {
			a[i] = ard[i];
		}

		int index = 0;
		int m_l = 0;/// 代表走过的当前距离，如果其他住户距离下就不需要加距离
		/// X = 1
		for (int i = 0; i < n; i++) {
			if (a[i] + s[i] * 2 > res) {
				res = a[i] + s[i] * 2;
				index = i;
				m_l = s[i];
			}
		}
		s[index] = 0;
		a[index] = 0;/// 剔除这个住户

		/// X = 2... 如果遇见距离小于m_l的只需要考虑疲劳值
		for (int i = 2; i <= n; i++) /// X推销
		{
			int p = 0;/// 疲劳值大小
			int index1 = 0;/// 疲劳下标
			for (int j = 0; j < n; j++) {
				if (s[j] <= m_l) {
					/// 只考虑疲劳值
					if (a[j] > p) {
						p = a[j];
						index1 = j;

					}
				} else {
					/// 考虑疲劳值和路程，但是此时疲劳值变为(a[j] + (s[j]- m_l) * 2
					if (a[j] + (s[j] - m_l) * 2 > p) {
						p = a[j] + (s[j] - m_l) * 2;
						index1 = j;
					}
				}

			}
			res += p;
			if (s[index1] > m_l)
				m_l = s[index1];
			s[index1] = a[index1] = 0;
		}

		System.out.println(res);
	}
}

//#include<bits/stdc++.h>
//using namespace std;
//#define N 100005
//int s[N],a[N];
//int n;
//int main()
//{
//    while(cin >> n)
//    {
//        int res = 0;
//        for(int i = 0; i < n; i ++)
//        {
//            cin >> s[i];
//        }
//        for(int i = 0; i < n; i ++)
//        {
//            cin >> a[i];
//        }
//        int index;
//        int m_l;///代表走过的当前距离，如果其他住户距离下就不需要加距离
//        ///X = 1
//        for(int i = 0; i < n; i ++)
//        {
//            if(a[i] + s[i] * 2 > res)
//            {
//                res = a[i] + s[i] * 2;
//                index = i;
//                m_l = s[i];
//            }
//        }
//        s[index] = a[index] = 0;///剔除这个住户
//        cout << res << endl;
//        ///X = 2... 如果遇见距离小于m_l的只需要考虑疲劳值
//        for(int i = 2; i <= n; i ++) ///X推销
//        {
//            int p = 0;///疲劳值大小
//            int index1;///疲劳下标
//            for(int j = 0; j < n; j ++)
//            {
//                if(s[j] <= m_l)
//                {
//                    ///只考虑疲劳值
//                    if(a[j] > p)
//                    {
//                        p = a[j];
//                        index1 = j;
//
//                    }
//                }
//                else
//                {
//                    ///考虑疲劳值和路程，但是此时疲劳值变为(a[j] + (s[j]- m_l) * 2
//                    if(a[j] + (s[j]- m_l) * 2> p)
//                    {
//                        p = a[j] + (s[j]- m_l) * 2;
//                        index1 = j;
//                    }
//                }
//
//            }
//            res += p;
//            if(s[index1] > m_l) m_l = s[index1];
//            s[index1] = a[index1] = 0;
//            cout << res << endl;
//        }
//    }
//    return 0;
//}
